/**
* <p>Title: StringCompare.java</p>
* <p>Description: </p>
* <p>Company: www.huoyunren.com</p>
* @author duanxiangyun
* @date 2016年12月28日
* @version 1.0
*/
package com.smarttest.portal.function.assertfuction;

import java.util.Arrays;
import java.util.List;

import org.testng.Assert;

import com.g7s.test.utils.common.CommonUtils;
import com.smarttest.common.util.DateFormats;
import com.smarttest.common.util.InterfaceUtils;
import com.smarttest.portal.function.AssertFunction;

public class ObjectCompare extends AssertFunction{
		private String result;
		public ObjectCompare(String s) {
			super(s);
			this.result = s;
		// TODO Auto-generated constructor stub
		}
	// 以下方法主要针对返回结果不是json的结果的断言方法
		/**
		 * 是否非空 excel中调用方式为notNull()
		 * 
		 * @param result
		 * @return 
		 */
		public boolean notNull() {
			return result != null;
		}

		/**
		 * 是否空 excel中调用方式为isNull()
		 * 
		 * @param result
		 * @return 
		 */
		public  boolean isNull() {
			return result == null;
		}

		/**
		 * result是否包含str excel调用方式:contains(str)
		 * 
		 * @param result
		 * @param str
		 * @return 
		 */
		public  boolean contains(String str) {
			return result.contains(str);
		}

		/**
		 * result是否等于str excel调用方式:equals(str)
		 * 
		 * @param result
		 * @param str
		 * @return 
		 */
		public  boolean equals(String str) {
			return result.equals(str);
		}

		/**
		 * 判断str1是否大于str2，excel调用方式:greaterThan(str1,str2)
		 * @param str1
		 * @param str2 
		 * @return Boolean
		 */
		public static Boolean greaterThan (String str1, String str2) {
			Boolean bol = false;
			Boolean bol2 = false;
			if (!str1.contains("0000-00-00 00:00:00") && !CommonUtils.isStrEmpty(str1) && !str1.equalsIgnoreCase("null")) {
				List<DateFormats> l = Arrays.asList(DateFormats.values());
				for (DateFormats d : l) {
					String format = d.getValue();
					if (InterfaceUtils.isValidDate(str1, format))
					{
						bol = InterfaceUtils.isBeforeDate(str2,str1, format);
						bol2 = true;
						break;
					}
				}
				if (!bol2) {
					bol = Double.parseDouble(str1) > Double.parseDouble(str2);
				}
				return bol;
			}		
			else {
				return true;
			}
		}
		
		/**
		 * 判断str1是否小于str2,excel调用方式:lessThan(str1,str2)
		 * @param str1
		 * @param str2 
		 * @return Boolean
		 */
		public static Boolean lessThan (String str1, String str2) {
			Boolean bol = false;
			Boolean bol2 = false;
			if (!str1.contains("0000-00-00 00:00:00") && !CommonUtils.isStrEmpty(str1) && !str1.equalsIgnoreCase("null")) {
				List<DateFormats> l = Arrays.asList(DateFormats.values());
				for (DateFormats d : l) {
					String format = d.getValue();
					if (InterfaceUtils.isValidDate(str1, format))
					{
						bol = InterfaceUtils.isBeforeDate(str1,str2, format);
						bol2 = true;
						break;
					}
				}
				if (!bol2) {
					bol = Double.parseDouble(str1) < Double.parseDouble(str2);
				}
				return bol;
			}		
			else {
				return true;
			}
		}
}
